package com.charging.business.vo.obj;

import com.alibaba.fastjson2.annotation.JSONField;
import com.charging.business.utils.ToolsUtil;
import lombok.Data;

/**
 * @author JerryLu
 * @date 2024/9/26 17:41
 * @description 出口在线计费分省信息
 */
@Data
public class SplitProvinceOnLine {
    /**
     * 省份编码
     * 必填：是
     */
    @JSONField(ordinal = 0)
    public Integer provinceId = 0;

    /**
     * 应收总金额
     * 单位：分
     * 必填：是
     * 通行介质为：OBU时，计费模块输出payFee累计，用于结算
     * 通行介质为：CPC、纸券、无介质时，由计费模块最后一次计费输出的（feeSpare1），用于结算
     */
    @JSONField(ordinal = 1)
    public Integer payFee = 0;

    /**
     * 实收总金额
     * 单位：分。
     * 必填：是
     */
    @JSONField(ordinal = 2)
    public Integer fee = 0;

    /**
     * 优惠总金额
     * 单位：分
     * 必填：是
     * 计费模块输出discountFee累计，用于结算
     */
    @JSONField(ordinal = 3)
    public Integer discountFee = 0;

    /**
     * 拆分总金额
     * 单位：分。用于结算
     * 必填：是
     * (1)	通行介质为CPC、纸券、无介质时，由计费模块最后一次计费输出的（feeSpare1），用于现场收费。
     * (2)	通行介质为OBU且折扣时，由计费模块最后一次计费中输出的（feeProvSumLocal），用于现场收费。
     * (3)	通行介质为OBU且不折扣时，等同于通行介质为CPC计费，由计费模块最后一次计费输出的（feeSpare1），用于现场收费。
     */
    @JSONField(ordinal = 4)
    public Integer splitAmount = 0;

    /**
     * 里程总数
     * 单位：米。计费模块输出feeSpare2累计
     * 必填：是
     */
    @JSONField(ordinal = 5)
    public Integer feeMileage = 0;

    /**
     * 计费收费单元数量
     * 必填：是
     */
    @JSONField(ordinal = 6)
    public Integer tollIntervalsCount = 0;

    /**
     * 后台收费单元编号组合
     * 使用“|”分隔。
     * 必填：是
     */
    @JSONField(ordinal = 7)
    public String oriIntervalsGroup = "";

    /**
     * 计费收费单元编号组合
     * 使用“|”分隔。
     * 必填：是
     */
    @JSONField(ordinal = 8)
    public String tollIntervalsGroup = "";

    /**
     * 计费收费单元的时间组合
     * YYYY-MM-DDThh:mm:ss，使用“|”分隔。
     * 必填：是
     */
    @JSONField(ordinal = 9)
    public String transTimeGroup = "";

    /**
     * 计费收费单元实收金额组合
     * 单位：分。使用“|”分隔。
     * 必填：是
     */
    @JSONField(ordinal = 10)
    public String feeGroup = "";

    /**
     * 计费收费单元优惠金额组合
     * 单位：分，优惠金额为优惠减免金额，未优惠填0。使用“|”分隔。
     * 必填：是
     */
    @JSONField(ordinal = 11)
    public String discountFeeGroup = "";

    /**
     * 省内自定义数据
     * 省内特有个性化内容字段扩展
     * 必填：否
     */
    @JSONField(ordinal = 12)
    public Object provData;

    /**
     * 预留字段1
     * 必填：否
     */
    @JSONField(ordinal = 13)
    public String spare1;

    /**
     * 预留字段2
     * 必填：否
     */
    @JSONField(ordinal = 14)
    public String spare2;

    /**
     * 预留字段3
     * 必填：否
     */
    @JSONField(ordinal = 15)
    public String spare3;

    /**
     * 预留字段4
     * 必填：否
     */
    @JSONField(ordinal = 16)
    public String spare4;

    /**
     * 预留字段5
     * 必填：否
     */
    @JSONField(ordinal = 17)
    public String spare5;

    @JSONField(serialize = false, deserialize = false)
    public void toFree() {
        splitAmount = 0;
        fee = 0;
        discountFee = 0;
        if (tollIntervalsCount > 0) {
            String[] fees = feeGroup.split("\\|");
            String[] diss = discountFeeGroup.split("\\|");

            for (int aa = 0; aa < fees.length; aa++) {
                int pay = ToolsUtil.a2i(fees[aa]) + ToolsUtil.a2i(diss[aa]);

                fees[aa] = "0";
                diss[aa] = ToolsUtil.i2a(pay);
                discountFee += pay;
            }

            feeGroup = String.join("|", fees);
            discountFeeGroup = String.join("|", diss);
        }

        //discountFee = payFee - splitAmount;
    }
}
